#include <stdio.h>
#include <stdlib.h>

typedef struct linknode
{
	int data;
	struct linknode *next;
}link_node;

link_node *creat()
{
	link_node *H=(link_node *)malloc(sizeof(link_node));
	H->data=0;
	H->next=NULL;

	return H;
}

int insert(link_node *H,int mydata)
{
	link_node *p=(link_node *)malloc(sizeof(link_node));
	while(H->next!=NULL)
	{
		H=H->next;
	}
	p->next=NULL;
	H->next=p;
	p->data=mydata;

	return 0;
}

int view(link_node *H)
{
	link_node *p=H;
	while(p->next!=NULL)
	{
		p=p->next;
		printf("%d ",p->data);
	}
	putchar(10);
	
	return 0;
}

int addlink(link_node *H1,link_node *H2,link_node *H3)
{
	link_node *p=H3;
	while(p->next!=NULL)
	{
		p=p->next;
	}
	link_node *q=NULL;
	H1=H1->next;
	H2=H2->next;
	while(H1!=NULL&&H2!=NULL)
	{
		printf("H1:%d  H2:%d\n",H1->data,H2->data);
		if(H1->data<=H2->data)
		{
			q=H1;
			H1=H1->next;
			q->next=NULL;
			p->next=q;
		}
		else
		{
			q=H2;
			H2=H2->next;
			q->next=NULL;
			p->next=q;
		}
		p=p->next;
		printf("p->data :%d\n",p->data);
	}
	if(H1==NULL)
	{
		p->next=H2;
	}
	else if(H2==NULL)
	{
		p->next=H1;
	}

	return 0;
}



int main(int argc, const char *argv[])
{
	link_node *H1=creat();
	link_node *H2=creat();
	link_node *H3=creat();
	insert(H1,1);
	insert(H1,3);
	insert(H1,5);
	insert(H1,7);
	insert(H1,9);
	insert(H2,2);
	insert(H2,4);
	insert(H2,6);
	insert(H2,8);
	insert(H2,10);
	view(H1);
	view(H2);
	addlink(H1,H2,H3);
	view(H3);
	
	return 0;
}
